package main

import (
	"github.com/gin-contrib/multitemplate"
	"github.com/gin-gonic/gin"
)

type stu struct {
	Name   string
	Age    int
	Gender string
}

func index(ctx *gin.Context) {
	ctx.HTML(200, "index.html", nil)
}
func student(ctx *gin.Context) {
	//模拟stus数据是从数据库查询得到的结果
	stus := []stu{
		{Name: "han", Age: 32, Gender: "男"},
		{Name: "kai", Age: 22, Gender: "男"},
		{Name: "shou", Age: 12, Gender: "男"},
	}
	ctx.HTML(200, "student.html", gin.H{
		//将stus数据传入模板文件中
		"students": stus,
	})
}
func course(ctx *gin.Context) {
	ctx.HTML(200, "course.html", nil)
}
func class(ctx *gin.Context) {
	ctx.HTML(200, "class.html", nil)
}

// 使用三方库加载HTML文件【模板继承】
func createMyRender() multitemplate.Renderer {
	render := multitemplate.NewRenderer()
	//参数name需要与响应返回的HTML name名一致！！！
	render.AddFromFiles("index.html", "templates/base.html", "templates/index.html")
	render.AddFromFiles("student.html", "templates/base.html", "templates/student.html")
	render.AddFromFiles("course.html", "templates/base.html", "templates/course.html")
	render.AddFromFiles("class.html", "templates/base.html", "templates/class.html")
	//如果有其他的页面依次进行添加即可
	return render
}

func main() {
	// 基于获取引擎对象，可以理解为路由对象
	r := gin.Default()

	// 加载模板文件[会一次全部加载一遍，最后加载的页面就是最终显示的页面内容]
	//r.LoadHTMLGlob("templates/*")
	// 用第三方的multitemplate.Renderer加载HTML
	r.HTMLRender = createMyRender()

	r.GET("/", index)
	r.GET("/student", student)
	r.GET("/course", course)
	r.GET("/class", class)

	// 启动:默认本机的8080端口
	r.Run()
}
